import { ApiProperty } from '@nestjs/swagger';
import { IsString, IsInt, IsNotEmpty, Matches, Length } from 'class-validator';

//注册的时候 用户名密码不能为空，长度为 6-30，并且限定了不能是特殊字符。
export class CreateUserDto {
  @ApiProperty({
    example: 'liks',
    description: '用户名、用户账号',
  })
  @IsNotEmpty({ message: '用户名必填' })
  @IsString()
  @Matches(/^[a-zA-Z0-9#$%_-]+$/, {
    message: '用户名只能是字母、数字或者 #、$、%、_、- 这些字符',
  })
  username: string;

  @ApiProperty({
    example: '123456',
    description: '密码',
  })
  @IsNotEmpty({ message: '密码必填' })
  @IsString()
  @Length(6, 30)
  password: string;

  @Length(1, 30)
  @ApiProperty({
    example: '江厌离',
    description: '用户昵称',
  })
  nickname: string;

  @ApiProperty({
    enum: [1, 0, -1],
    example: 1,
    default: -1,
    description: '性别。1男，0女，-1未知',
  })
  @IsInt()
  gender: number;

  @ApiProperty({
    example: '',
    description: '用户头像',
  })
  avatar: string;

  @ApiProperty({
    example: '1008611',
    description: '联系方式',
  })
  @Length(11, 11, {message: '【phone】手机号码长度必须为11位数！'})
  phone: string;

  @ApiProperty({
    example: '123456789@qq.com',
    description: '电子邮箱',
  })
  email: string;

  @ApiProperty({
    example: '',
    description: '备注',
  })
  remark: string;
}
